Como lanzar una actividad nativa de android (programada en java) desde React Native usando Native Modules.
Codigo de Ejemploconst App = () => {
return (
<View style={{padding: 10}}>
<Button
title="Press me"
onPress={() => Alert.alert('Simple Button pressed')}
/>
</View>
);
};
package com.reactjavaactivity;
import android.content.Intent;
import androidx.annotation.NonNull;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class ActivityStarter extends ReactContextBaseJavaModule {
public ActivityStarter(ReactApplicationContext reactContext){
super(reactContext);
}
@NonNull
@Override
public String getName() {
return "ActivityStarter";
}
@ReactMethod
public void openNavigationActivity(String place){
Intent intent = new Intent(getCurrentActivity(), NavigationActivity.class);
intent.putExtra("PLACEID", place);
getCurrentActivity().startActivity(intent);
}
}
package com.reactjavaactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class JavaActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_java);
}
}
package com.navigationswo;
import androidx.annotation.NonNull;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ActivityStarterPackage implements ReactPackage {
@NonNull
@Override
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactApplicationContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new ActivityStarter(reactApplicationContext));
return modules;
}
@NonNull
@Override
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactApplicationContext) {
return Collections.emptyList();
}
}
packages.add( new ActivityStarterPackage());
let startActivity = NativeModules.ActivityStarter;
startActivity.openActivity("hola")
let startActivity = NativeModules.ActivityStarter;
const App = () => {
return (
<View style={{padding: 10}}>
<Button
title="Press me"
onPress={() => startActivity.openActivity("hola")}
/>
</View>
);
};
Tambien tenemos que hacer la importacion de NativeModules:
Una vez hecho todo esto al pulsar en el botón que hemos creado en nuestra aplicación React-Native se lanzará la actividad Java nativa de Android
React Native | Java | Native Modules